home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / DIAGXPRT.PAK / DIAGXPRT.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  4KB  |  163 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // (C) Copyright 1995, 1995 by Borland International, All Rights Reserved
  4. //
  5. //----------------------------------------------------------------------------
  6. #if !defined(DIAGXPRT_H)
  7. #define DIAGXPRT_H
  8.  
  9. #include <owl/applicat.h>
  10. #include <owl/decframe.h>
  11. #include <owl/controlb.h>
  12. #include <owl/editfile.h>
  13. #include <owl/buttonga.h>
  14. #include <owl/dialog.h>
  15. #include <owl/tinycapt.h>
  16. #include <owl/menu.h>
  17. #include <owl/statusba.h>
  18. #include <owl/serialze.h>
  19.  
  20. #if !defined(BI_PLAT_WIN16)
  21. # error  This sample requires TOOLHELP and must be built for the WIN16 env.
  22. #endif
  23.  
  24. #define DIAG_INI  "owl.ini"
  25. #define DIAG_CLS  "owldiag"
  26. #define DIAG_RECT "rect"
  27. #define DIAG_MODE "mode"
  28. #define DIAG_SIZE "size"
  29.  
  30. #define CM_LOGPARAMERROR  WM_USER+1000
  31. #define CM_LOGERROR       CM_LOGPARAMERROR+1
  32. #define CM_OUTSTR         CM_LOGERROR+1
  33. #define CM_DEFAULT        CM_OUTSTR+1
  34.  
  35. //
  36. //
  37. //
  38. int CALLBACK Callback(uint16 id, uint32 data);
  39.  
  40. //
  41. //
  42. //
  43. class TDispData {
  44.   public:
  45.     char   ModuleName[80];   // Sizes?
  46.     char   ProcName[4096];   // Also gets used for OutputDebugString messages
  47.     uint   ErrorCode;
  48.     DWORD  Data;
  49.     void far* far* Param;
  50. };
  51.  
  52. //
  53. //
  54. //
  55. class TDiagFrame : public TDecoratedFrame, public TTinyCaption,
  56.                    public TSerializeReceiver {
  57.   public:
  58.     TDiagFrame(const char* t, TWindow* c);
  59.     char far* GetClassName() { return "DiagXprt"; }
  60.     void DataReceived(uint32 length, void* data);
  61.  
  62.   protected:
  63.     LRESULT  EvCommand(uint id, HWND hWndCtl, uint notifyCode);
  64.     void     EvSysCommand(uint cmdType, TPoint& p);
  65.     void     EvSize(uint type, TSize& size);
  66.     void     SetupWindow();
  67.     void     CleanupWindow();
  68.     void     CmToggleSize();
  69.  
  70.   private:
  71.     TRect    rect;
  72.  
  73.   DECLARE_RESPONSE_TABLE(TDiagFrame);
  74. };
  75.  
  76. //
  77. //
  78. //
  79. class TToolHelp {
  80.   public:
  81.     struct   ERRMAP { uint err; char* szErr; };
  82.     static   ERRMAP errmap[];
  83.     void     FormatLogParamError(char* p, int size, TDispData* d);
  84.     void     FormatLogError(char* p, int size, TDispData* d);
  85.  
  86.     char*    GetTaskName();
  87.     char*    GetProcName(FARPROC p);
  88.  
  89.   private:
  90.     static   char buffer[1024];
  91.     char     TaskName[10];
  92.     char     ProcName[80];
  93. };
  94.  
  95. //
  96. //
  97. //
  98. class TDiagClient : public TToolHelp, public TEditFile {
  99.   public:
  100.     enum { maxLines = 512 };
  101.  
  102.     enum     Mode { normalMode = 1, ripMode = 2 } mode;
  103.     enum     Size { bigSize = 1, smallSize = 2 } size;
  104.  
  105.     Size     GetSize() {return size;}
  106.     void     SetSize(Size s);
  107.     Mode     GetMode() {return mode;}
  108.     void     SetMode(Mode m) {mode = m;}
  109.     void     SetupWindow();
  110.  
  111.     void     CleanupWindow();
  112.     static   TDiagClient* pThis;
  113.     TFont*   pFont0;
  114.     TFont*   pFont1;
  115.     FARPROC  pThunk;
  116.  
  117.   protected:
  118.     int     nActive;
  119.  
  120.     void    CmFileNewEnable(TCommandEnabler& c){ c.Enable(1); }
  121.     void    CmFileOpenEnable(TCommandEnabler& c){ c.Enable(1); }
  122.     void    CmFileSaveEnable(TCommandEnabler& c) { TEditFile::CmSaveEnable(c); }
  123.     void    CmFileSaveAsEnable(TCommandEnabler& c) { c.Enable(1); }
  124.     void    CmStartStopEnable(TCommandEnabler& c) { c.Enable(1); }
  125.     void    CmSetupEnable(TCommandEnabler& c) { c.Enable(1); }
  126.     void    CmStartEnable(TCommandEnabler& c) { c.Enable(!nActive); }
  127.     void    CmStopEnable(TCommandEnabler& c) { c.Enable(nActive); }
  128.     void    CmFileNew() { TEditFile::CmFileNew(); }
  129.     void    CmFileOpen() { TEditFile::CmFileOpen(); }
  130.     void    CmFileSave() { TEditFile::CmFileSave(); }
  131.     void    CmFileSaveAs() { TEditFile::CmFileSaveAs(); }
  132.     void    CmSetup();
  133.     void    CmStart();
  134.     void    CmStop();
  135.     void    CmMem();
  136.     void    CmHelp();
  137.     LRESULT CmOutStr(WPARAM wParam, LPARAM lParam);
  138.     LRESULT CmLogError(WPARAM wParam, LPARAM lParam);
  139.     LRESULT CmLogParamError(WPARAM wParam, LPARAM lParam);
  140.     LRESULT CmDefault(WPARAM wParam, LPARAM lParam);
  141.     void    LoadMode();
  142.     void    SaveMode();
  143.  
  144.     // Override of TEditFile::CanClear()
  145.     //
  146.     bool    CanClear();
  147.  
  148.   DECLARE_RESPONSE_TABLE(TDiagClient);
  149. };
  150.  
  151. //
  152. //
  153. //
  154. class TOwlDiagApp : public TApplication {
  155.   public:
  156.     void  InitMainWindow();
  157.  
  158.   private:
  159.     static int   speedbar[];
  160. };
  161.  
  162. #endif
  163.